Integrated circuits (ICs) are used in various applications and devices. Generally, in a programmable device, e.g., a field-programmable gate array (FPGA) device, configuration data is stored in a memory module. The memory module may be an embedded non-volatile memory (NVM) module that has the capability to retain the stored data even when the device is not powered. Such a device is programmed or configured with the configuration data from the NVM upon power up, and enters a user mode upon successful configuration.
However, during user mode operation, content stored in the device, e.g., configuration data, can be accessed and copied or reverse engineered by unauthorized individuals. If the stored data can be read from the device, the data can be stored and used in another similar device. For instance, sensitive data can be copied from one device and implemented on another to create a duplicate system. Even encrypted content in programmable device can be readily reverse-engineered once the security key that is associated with the encrypted content is obtained.
Generally speaking, in security-sensitive systems an external controller is used to monitor the system and protect configuration data in the system from being accessed by unauthorized individuals. The external controller is capable of detecting tamper attempts on the system and executing a set of instructions to prevent unwanted access to the content, e.g., configuration data, stored in the system. However, having an external controller takes up valuable real estate on the board and is cumbersome to maintain. In addition, connection issues between the controller and the device may prevent the complete execution of an erase instruction. As a result, sensitive data may not be completely erased in time to prevent unauthorized copying.